python 基础
一、基础概论
1、数据对象及其组织
什么是数据:数据(data)是信息的表现形式和载体
数据类型归纳:
- 简单类型用来表示值:整数int、浮点数float、复数complex、逻辑 值bool、字符串str
- 容器类型用来组织这些值:列表list、元组tuple、集合set、字典dic
- 数据类型之间几乎都可以转换
对数据进行组织
- 对大量的数据进行处理的时候,需要建 立各种各样的数据组织,以便提高计算 效率
- 组织方式:
- 没有组织
- 标签式组织数据
- 队列、栈、树、图等
2、计算和控制流程
计算与流程
计算: 对现实世界处理和过程的抽象
普通运算:
12 * 34.5 + 2 416.0
字符串的运算:
('acd'+'231') * 3 'acd231acd231acd231'
调用黑盒子(封装好的函数):
import math math.sqrt(25) 5.0
运算语句
将表达式复制给变量进行引用
赋值语句用来实现处理与暂存(可以将黑盒子里面的函数进行赋值):
sqr=math.sqrt sqr(25) 5.0
控制流语句
控制流语句用来组织语句描述过程
定义语句:def 、class
定义语句也用来组织语句,把一系列 运算语句集合起来给一个名字
描述了一个包含一系列处理过程的计 算单元,主要为了源代码的各种复用
def sum_list(alist): sum_temp=0 for i in alist: sum_temp += i return sum_temp my_list=[1,2,3,4,5,6,7,8,9 ] my_sum=sum_list(my_list) print(my_sum) 45
- 可以定义函数、类等“代码”对象
- 调用函数或者类,也可以得到数据对 象,Python里所有可调用的事物称 为callable
二、数据类型:基本类型
1、数值
(1)、整数类型:int
- 最大的特点是不限制大小:无论多复杂的算式都可以直接得到结果
- 常见运算:
- 大小比较:
连续比较判断
数的进制:通常采用十进制
- 整数的各种进制表示:Python语言中可以直接用二进制、八进制和 十六进制来表示整数,只要加一个前缀用以 标识几进制即可
(2)、浮点数类型:float
- 操作和整数类似
- 浮点数受到17为有效数字的限制
- 特点:
- 科学计数法
- 有效位数
- 特性:进制转化造成精度误差
(3)、复数类型
- 复数生成:Python内置复数数据类型
- 复数运算:支持所有常见计算
- 复数比较:复数之间只能比较是否相等
- 复数应用
- 求平面上两个点(x1,y1)和(x2,y2)的距离
(4)、更多的数学函数:math模块
<img src="C:\Users\BinlingChen\AppData\Roaming\Typora\typora-user-images\image-20230126214924785.png" alt="image-20230126214924785" />
- 数学常数
- 圆周率π、自然对数的底e等
- 数学函数
- 三角函数、对数、最大公约数、最小公倍数等
- 专门面向复数计算
- math模块中的数学函数只能用于计算整数 和浮点数,对于复数就无能为力了
- 平面直角坐标和极坐标之间的转换
2、逻辑值
(1)、判断与真值
- 逻辑(bool)类型
- 逻辑值仅包括真(True)/假(False)两个
- 用来配合if/while等语句做条件判断
(2)、逻辑运算
“与” and
- “并且”
- and连接的两个真值需要同时为真,计算结果才为真
- “或” or
- “或者”
- or连接的两个真值只要有一个为真,计算 结果就为真
- “非” not
- “否定”
- not连接的一个真值,非真为假,非假为真
- and和or是双目运算,由两个逻辑类型真值进行运算
- not是单目运算,作用于一个逻辑类型真值
- 优先级:not最高,and次之,or最低
(3)、各种类型对应的真值
- 整数、浮点数和复数类型
- 0是“假”,所有非0的数值都是“真”
- 字符串类型
- 空串("")是“假”,所有非空串都是“真”
- 所有序列类型(包括字符串)
- 空序列是“假”,所有非空的序列都是“真”
- 空值None
- 表示“无意义”或“不知道”,也是“假“
3、字符串
(1)、文本的表示
- 字符串就是把一个个文字的字符“串起来”的数据
- 文字字符包含有拉丁字母、数字、标点符号、 特殊符号,以及各种语言文字字符
- 表示字符串数值
- 用双引号或者单引号都可以表示字符串, 但必须成对
- 多行字符串用三个连续单引号表示
- 特殊字符用转义符号“\”表示
- 字符的编号
- 第一个字符的编号是0,第二个字符编号是1,...
- 最后一个字符的编号是-1,倒数第二个字符编号是2,...
- 用这种整数编号可以从字符串中抽取出任 何一个字符
(2)、字符串和名字的区别
- 字符串是数据本身
- 名字是数据的标签
- 名字和字符串是“名”和“值”之间的关系
- 一个字符串数值可以关联多个名字
- 一个名字在同一时刻只能关联一个字符串数值
- 字符串数值只能是字符串类型
- 名字则可以关联任意类型的数值。
(3)、常见的字符串操作
获取字符串的长度:len函数
切片(slice)操作:s[start:end :step]:start 和end是位置,step为步长
不包括end序号的字符,若想取到end需往后多取一位
“加法”和“乘法”
- +:将两个字符串进行连接,得到新的字符串。
- *****:将字符串重复若干次,生成新的字符串
判断字符串内容是否相同(==)
判断字符串中是否包含某个字符串(in)
删除空格
str.strip:去掉字符串前后的所有空格,内部的空 格不受影响
str.lstrip:去掉字符串前部(左部)的所有空格
str.rstrip:去掉字符串后部(右部)的所有空格
判断字母数字
- str.isalpha:判断字符串是否全部由字母构成
- str.isdigit:判断字符串是否全部由数字构成
- str.isalnum:判断字符串是否仅包含字母和数字, 而不含特殊字符
(4)、字符串的高级操作
- split:分割;join:合并
- upper/lower/swapcase:大小写相关
- ljust/center/rjust:排版左中右对齐
- replace:替换子串
(5)、字符串是一种序列
- 序列(sequence):能够按照整数顺序排列的数据
- 序列的内部结构:
- 可以通过从0开始的连续整数来索引单个对象;
- 可以执行切片,获取序列的一部分;
- 可以通过len函数来获取序列中包含多少元素;
- 可以用加法“+”来连接为更长的序列;
- 可以用乘法“*”来重复多次,成为更长的序列;
- 可以用“in”来判断某个元素是否在序列中存在。
4、变量和引用
(1)、给数据命名
- 命名语法:<名字> = <数据>
- 命名规则
- 字母和数字组合而成,下划线“_”算字母,字母 区分大小写
- 不带特殊字符(如空格、标点、运算符等)
- 名字的第一个字符必须是字母,而不能是数字 (注:在Python语言的名字规则中,汉字算是字母)
(2)、名字与变量
名字(name)
- 名字像一个标签,通过赋值来“贴”在某个数据数值 上
- 名字和数值的关联,称为引用。
- 关联数值后的名字,就拥有了数据的值(value) 和类型(type)
- 一个数值可以和多个名字关联
变量(variable)
- 与数值关联的名字也称作变量,表示名字 的值和类型可以随时变化。
- 变量可以随时指向任何一个数据对象,比如True, 1.02,或者"Hello“
- 变量的类型随着指向的数据对象类型改变而改变
赋值(assignment)
- 名字与数值关联的过程,称为给变量赋值
- “==”(相等关系)是对数值的相等性进行判断
- “=”(赋值号)则是计算等号右边式子的值,赋值 给等号左边的变量
赋值语句
- 通过赋值号将变量和表达式左右相连的语句
- 赋值语句the_sum = 0,实际上是创建了名为 the_sum的变量,然后指向数据对象“0"
(3)、灵活多变的赋值语句
最基本的赋值语句形式:<名字> = <数据>
合并赋值:a = b = c = 1
按顺序依次赋值:a, b, c = 7, 8, 9
简写赋值语句
price += 1 # price=price+1 price *= 1.5 # prince=price*1.5 price /= 3 + 4 # price=price/(3+4)
三、数据类型:容器类型
(1)列表和元组
数据收纳盒
- 用来收纳数据对象的数据类型
- 以一种规则的下标索引方式(收纳盒名字+ 数字序号)访问到每个数据
- 这种收纳盒是一种序列
- 列表可以删除、添加、替换、重排序列中的 元素(可变类型)
- 元组是不能再更新(不可变)序列:元组在保留列表大多数功能的同时,去掉了一些灵活性以换取更高的处理性能
列表和元组的创建
- 创建列表:方括号法[],指明类型法list()
- 创建元组:圆括号法(),指明类型法tuple()
- 列表或元组中保存的各个数据称作元素(element),类型没有限制
列表的操作:增长/缩减
- 增长列表:append操作/insert操作/extend操作
- 缩减列表:pop操作/remove操作/clear操作
- 列表是一种可变容器,可以随意增减
- 但并不是所有的数据容器都能像列表 这样可以继续添加新元素
列表的操作:重新组织
- reverse/sort操作
- reverse:把列表中的数据元素头尾反转重新排列
- sort:把列表中的数据元素按照大小顺序重新排列
- reversed/sorted操作:到重新排列的列表,而不影原来的列表
- reverse/sort操作
列表的方法
列表和元组的操作
- 合并
- 加法运算+:连接两个列表/元组
- 乘法运算*:复制n次,生成新列表/元组
- 列表/元组大小:len():列表/元组中元素的个数
- 合并
列表和元组的操作:索引和切片
- 索引:alist[n]或atuple(n)
- 可以用赋值语句给列表中的任何一个位置重新赋值
- 但元组属于不可变类型,索引只能获取对应位置中的 数据值,不可重新赋值
- 切片
- alist[start : end : step]
- atuple(start : end : step)
- 索引:alist[n]或atuple(n)
列表和元组的操作:查找和计算
- 查找
- in操作:判断某个元素是否存在于列表/元组中
- index操作:指定的数据在列表/元组的哪个位置
- count操作:指定的数据在列表/元组中出现过几次
- 计算
- sum函数:将列表中所有的数据元素累加
- min/max函数:返回列表中最小/最大的数据元素
- 查找